home *** CD-ROM | disk | FTP | other *** search
-
- WRITE(2) UNIX Programmer's Manual WRITE(2)
-
- NNAAMMEE
- wwrriittee, wwrriitteevv - write output
-
- SSYYNNOOPPSSIISS
- ##iinncclluuddee <<ssyyss//ttyyppeess..hh>>
- ##iinncclluuddee <<ssyyss//uuiioo..hh>>
- ##iinncclluuddee <<uunniissttdd..hh>>
-
- _s_s_i_z_e___t
- wwrriittee(_i_n_t _d, _c_o_n_s_t _v_o_i_d _*_b_u_f, _s_i_z_e___t _n_b_y_t_e_s)
-
- _s_s_i_z_e___t
- wwrriitteevv(_i_n_t _d, _c_o_n_s_t _s_t_r_u_c_t _i_o_v_e_c _*_i_o_v, _i_n_t _i_o_v_c_n_t)
-
- DDEESSCCRRIIPPTTIIOONN
- WWrriittee() attempts to write _n_b_y_t_e_s of data to the object referenced by the
- descriptor _d from the buffer pointed to by _b_u_f. WWrriitteevv() performs the
- same action, but gathers the output data from the _i_o_v_c_n_t buffers speci-
- fied by the members of the _i_o_v array: iov[0], iov[1], ..., iov[iovcnt-1].
-
- For wwrriitteevv(), the _i_o_v_e_c structure is defined as:
-
- struct iovec {
- void *iov_base;
- size_t iov_len;
- };
-
- Each _i_o_v_e_c entry specifies the base address and length of an area in mem-
- ory from which data should be written. WWrriitteevv() will always write a com-
- plete area before proceeding to the next.
-
- On objects capable of seeking, the wwrriittee() starts at a position given by
- the pointer associated with _d (see lseek(2)). Upon return from wwrriittee(),
- the pointer is incremented by the number of bytes which were written.
-
- Objects that are not capable of seeking always write from the current po-
- sition. The value of the pointer associated with such an object is unde-
- fined.
-
- If the real user is not the super-user, then wwrriittee() clears the set-user-
- id bit on a file. This prevents penetration of system security by a user
- who ``captures'' a writable set-user-id file owned by the super-user.
-
- When using non-blocking I/O on objects such as sockets that are subject
- to flow control, wwrriittee() and wwrriitteevv() may write fewer bytes than request-
- ed; the return value must be noted, and the remainder of the operation
- should be retried when possible.
-
- RREETTUURRNN VVAALLUUEESS
- Upon successful completion the number of bytes which were written is re-
- turned. Otherwise a -1 is returned and the global variable _e_r_r_n_o is set
- to indicate the error.
-
- EERRRROORRSS
- WWrriittee() and wwrriitteevv() will fail and the file pointer will remain unchanged
- if:
-
- [EBADF] _D is not a valid descriptor open for writing.
-
- [EPIPE] An attempt is made to write to a pipe that is not open for
-
-
- reading by any process.
-
- [EPIPE] An attempt is made to write to a socket of type that is not
- connected to a peer socket.
-
- [EFBIG] An attempt was made to write a file that exceeds the pro-
- cess's file size limit or the maximum file size.
-
- [EFAULT] Part of _i_o_v or data to be written to the file points out-
- side the process's allocated address space.
-
- [EINVAL] The pointer associated with _d was negative.
-
- [ENOSPC] There is no free space remaining on the file system con-
- taining the file.
-
- [EDQUOT] The user's quota of disk blocks on the file system contain-
- ing the file has been exhausted.
-
- [EIO] An I/O error occurred while reading from or writing to the
- file system.
-
- [EAGAIN] The file was marked for non-blocking I/O, and no data could
- be written immediately.
-
- In addition, wwrriitteevv() may return one of the following errors:
-
- [EINVAL] _I_o_v_c_n_t was less than or equal to 0, or greater than
- {UIO_MAXIOV}.
-
- [EINVAL] One of the _i_o_v___l_e_n values in the _i_o_v array was negative.
-
- [EINVAL] The sum of the _i_o_v___l_e_n values in the _i_o_v array overflowed a
- 32-bit integer.
-
- SSEEEE AALLSSOO
- fcntl(2), lseek(2), open(2), pipe(2), select(2)
-
- SSTTAANNDDAARRDDSS
- The wwrriittee() function is expected to conform to IEEE Std1003.1-1988
- (``POSIX'').
-
- HHIISSTTOORRYY
- The wwrriitteevv() function call appeared in 4.2BSD. The wwrriittee() function call
- appeared in Version 6 AT&T UNIX.
-
- 4th Berkeley Distribution April 2, 1994 2
-